/** 退出登录并强制刷新页面（会重定向到登录页） */
import { isMessageGo,validToken } from '@/assets/public.js';
function logout() {
  isMessageGo({
    action: 'login',
  })
}

export const request = (options) => {
	return new Promise(async (resolve, reject) => {
    try {
			await validToken();
      uni.request({
        url:  options.url, //接口地址：前缀+方法中传入的地址
        // url: '/api' + options.url, //接口地址：前缀+方法中传入的地址
        method: options.method || 'GET', //请求方法：传入的方法或者默认是“GET”
        data: options.data || {}, //传递参数：传入的参数或者默认传递空集合
        header: {
          'xzdToken': uni.getStorageSync('xzdToken'),
          'version': uni.getStorageSync('version'),
          'lang': uni.getStorageSync('lang'),
        },
        success: (res) => {
          let statusCode = res.statusCode;
          res.data.msg_ru = res.data.msg
          if (statusCode == 200) {
            const apiData = res.data
            const code = apiData.code;
          
            switch(code){
              case 0:
              case 200:
                // 本系统采用 code === 1 200 来表示没有业务错误
                resolve(apiData)
                break
              case 401:
                return logout()
              default:
                // 不是正确的 code
                uni.showToast({
                  title: apiData.msg,
                  icon: 'none',
                })
                return reject(new Error("Error"))
            }
          } else {
            switch(statusCode) {
              case 400:
                res.errMsg = "请求错误"
                break
              case 401:
                // Token 过期时
                logout();
                break
              case 403:
                res.errMsg = "拒绝访问"
                break
              case 404:
                res.errMsg = "请求地址出错"
                break
              case 405:
                res.errMsg = "请求方式错误"
                break
              case 408:
                res.errMsg = "请求超时"
                break
              case 500:
                res.errMsg = "服务器内部错误"
                break
              case 501:
                res.errMsg = "服务未实现"
                break
              case 502:
                res.errMsg = "网关错误"
                break
              case 503:
                res.errMsg = "服务不可用"
                break
              case 504:
                res.errMsg = "网关超时"
                break
              case 505:
                res.errMsg = "HTTP 版本不受支持"
                break
            }
            uni.showToast({
              title: res.errMsg,
              icon: 'none',
            })
            return reject(new Error(res.errMsg))
          }
        },
        // 这里的接口请求，如果出现问题就输出接口请求失败
        fail: (err) => {
          console.log(err)
          reject(err)
        }
      })
    } catch (error) {
      reject(error)
    }
	})
}